package com.ssy.lingxi.settle.accounts.model.vo.request;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.List;

/**
 * 会员结算策略新增VO
 * @author 伍将
 * @date 2020/10/21
 * @version 2.0.0
 */
public class MemberSettlementStrategyAddVO implements Serializable {
    private static final long serialVersionUID = -2740635928086863575L;

    /**
     * 策略名称
     */
    @NotBlank
    @Size(max = 48, message = "最长48个字符，24个汉字")
    private String name;

    /**
     * 结算方式:1.账期（默认） 2.月结
     */
    @NotNull(message = "结算方式范围为：1-2")
    @Positive(message = "结算方式范围为：1-2")
    private Integer settlementWay = 1;

    /**
     * 账期天数
     */
    @NotNull(message = "账期天数大于0")
    @Positive(message = "账期天数大于0")
    private Integer settlementDays;

    /**
     * 结算日期
     */
    @NotNull(message = "结算日期大于0")
    @Positive(message = "结算日期大于0")
    private Integer settlementDate;

    /**
     * 付款日
     */
//    @NotNull(message = "付款日大于0")
//    @Positive(message = "付款日大于0")
    private Integer estimatedPaymentDate;

    /**
     * 结算单据类型:1.生成通知单 2.物流单
     */
    @NotNull(message = "结算单据类型范围为：1-2")
    @Positive(message = "结算单据类型范围为：1-2")
    private Integer settlementOrderType;

    /**
     * 结算支付方式:1.线下结算 2.通联支付结算
     */
    @NotNull(message = "结算支付方式范围为：1-2")
    @Positive(message = "结算支付方式范围为：1-2")
    private Integer settlementPaymentType;

    /**
     * 成员列表
     */
    @Valid
    private List<MemberSettlementStrategyMemberAddVO> memberList;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getSettlementWay() {
        return settlementWay;
    }

    public void setSettlementWay(Integer settlementWay) {
        this.settlementWay = settlementWay;
    }

    public Integer getSettlementDays() {
        return settlementDays;
    }

    public void setSettlementDays(Integer settlementDays) {
        this.settlementDays = settlementDays;
    }

    public Integer getSettlementDate() {
        return settlementDate;
    }

    public void setSettlementDate(Integer settlementDate) {
        this.settlementDate = settlementDate;
    }

    public Integer getEstimatedPaymentDate() {
        return estimatedPaymentDate;
    }

    public void setEstimatedPaymentDate(Integer estimatedPaymentDate) {
        this.estimatedPaymentDate = estimatedPaymentDate;
    }

    public void setSettlementPaymentType(Integer settlementPaymentType) {
        this.settlementPaymentType = settlementPaymentType;
    }

    public Integer getSettlementOrderType() {
        return settlementOrderType;
    }

    public void setSettlementOrderType(Integer settlementOrderType) {
        this.settlementOrderType = settlementOrderType;
    }

    public List<MemberSettlementStrategyMemberAddVO> getMemberList() {
        return memberList;
    }

    public Integer getSettlementPaymentType() {
        return settlementPaymentType;
    }

    public void setSettlementPayment(Integer settlementPaymentType) {
        this.settlementPaymentType = settlementPaymentType;
    }

    public void setMemberList(List<MemberSettlementStrategyMemberAddVO> memberList) {
        this.memberList = memberList;
    }
}
